package logica;

import java.sql.Date;
import java.util.List;
import java.util.UUID;

import datos.*;
import datos.interfaces.*;


public class GestorCompras {
	
	public Categoria obtenerCategoria(String catID){
		ICategoriaDAO cDAO=new JDBCCategoriaDAO();
		return cDAO.obtenerCategoria(catID);
	}
	
	public List<Categoria> obtenerTodasCategorias(){
		ICategoriaDAO cDAO=new JDBCCategoriaDAO();
		return cDAO.obtenerTodasCategorias();
	}
	
	public List<Objeto> obtenerObjetosCategoria(String categoriaID){
		IObjetoDAO oDAO=new JDBCObjetoDAO();
		return oDAO.obtenerObjetosCategoria(categoriaID);
	}
	
	public boolean disponeUnidadesIntercambio(Usuario user,Objeto obj){
		if(user.getUnidadesIntercambio()<obj.getValor()){
			return false;
		} else {
			return true;
		}
	}
	
	public boolean registrarCompra(Usuario user, Objeto obj){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		IUsuarioDAO uDAO = new JDBCUsuarioDAO();
		IObjetoDAO oDAO = new JDBCObjetoDAO();
		Solicitud saux=new Solicitud();
		saux.setAdministrador(null);
		saux.setEstadoSolicitud("Para envio");
		saux.setFecha(new java.sql.Date(new java.util.Date().getTime()));
		saux.setObjeto(obj);
		saux.setSolicitudID(UUID.randomUUID().toString());
		saux.setUsuario(user);
		saux.setValorTasacion(obj.getValor());
		
		sDAO.insertarSolicitud(saux);
		user.setUnidadesIntercambio(user.getUnidadesIntercambio()-obj.getValor());
		uDAO.modificarUnidadesUsuario(user.getUnidadesIntercambio(), user.getUsuarioID());
		
		oDAO.modificarVendidoObjeto(obj.getObjetoID(), user.getUsuarioID());
		return true;
	}
	
	public List<Solicitud> obtenerSolicitudesPendientesDeEntrega(){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		return sDAO.obtenerSolicitudes("Para envio");
	}
	
	public boolean finalizarEnvio(String solicitudID){
		ISolicitudDAO sDAO=new JDBCSolicitudDAO();
		sDAO.modificarEstadoSolicitud(solicitudID, "Enviado");
		return true;
	}
}
